# python引入模块os方法
import os

# 定义一个全局变量，用于存储文件大小合计值
FilesSize = 0


def Display_Detail(dir2):  # 做成一个显示详细的子函数
    global FilesSize

    for root, dirs, files in os.walk(dir2):  # 利用os.walk遍历指定路径下所有的文件和文件夹
        print('')
        print('####(子)文件夹【{}】下包含如下文件：'.format(root),end='#####'*10)     # root为对象路径
        print('')
        for name in files:  # 如果name为文件名时，name为root路径下的文件，遍历每一个文件
            print('文件名称：{:<50}'.format(name),end=' | 文件大小（byte）：')
            print(os.path.getsize(os.path.join(root,name)))   # os.path.getsize来获取文件大小
            FilesSize = FilesSize + os.path.getsize(os.path.join(root,name))  # 存储文件大小的合计，循环累加
        for name in dirs:  # 如果name为路径名称时，函数自调用来获取子目录下的要件信息
            Display_Detail(name)   # 自调用


def Display_Total(dir2):   # 通过这个函数把全局变量的合计值输出
    print('')
    print('#'*100)
    print('####路径【{}】以及其子文件夹下 所有文件大小合计为：{} MB'.format(dir2, round(FilesSize/1024/1024,2)))   # 保留两位小数四舍五入
    print('#' * 100)

def Find_files_in_dir():  # 此函数调用上面写好的两个函数，来完成两项任务
    dir2=input(r'请输入路径：')
    Display_Detail(dir2)      # 任务1 打印指定目录下的详细
    Display_Total(dir2)       # 任务2 打印所有目录和子目录下文件大小的合计值

# 测试/启动程序
Find_files_in_dir()